Haut Précedent Suivant Titre Sommaire

8.2.9 - Serveur Pégase :

Le serveur Pégase héberge deux serveurs applicatifs :
- un serveur Apache contenant les pages publiques de la société ACME,
- un serveur de messagerie permettant l’émission et la réception de messages depuis Internet.

8.2.9.A - Serveur Apache :

L’installation du serveur Apache hébergé par le serveur Pégase est décrite au paragraphe ‎8.2.6.B - . Ce serveur hébergeant les données publiques accessibles à tous il ne comprend pas d’interface sécurisée SSL.

8.2.9.B - Serveur de messagerie :

8.2.9.B.1 - Lecture des messages :
La lecture des messages s’effectue suivant le protocole IMAP dans sa version sécurisée IMAPS (IMAP over SSL) qui consiste à monter un tunnel SSL entre serveur et client avant de permettre la lecture des messages.

L’installation du serveur « courier-imap-ssl » (version 1.4.3-3) permettant de remplir cette fonctionnalité s’effectue sans problèmes particuliers en effectuant les manipulations suivantes :
è	Installation du package courier-imap-ssl :
      - apt-get install courier-imap-ssl

è	Ce package dépend des packages suivants :
      - exim ou mail-transport-agent ;
      - courier-imap (version >= 1.3.7-3) ;
      - courier-ssl (version >= 0.37.3) ;
      - openssl ;
      - libc6 (version >= 2.2.4-4) ;
      - libgdbmg1 ;
      - courier-base (version >= 0.37.3) ;
      - courier-authdaemon (version >= 0.37.3) ;
      - perl ;
      - debconf ;
      - libpam0g (version >= 0.72-1).

Le logiciel « courier-imap-ssl » se paramètre à l’aide du fichier de configuration « /etc/courier/imapd-ssl ». Le fichier correspondant au serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de parametrage du serveur courier en mode SSL
# Serveur     : Pegase
# Copyright   : marc.boget@gendarmerie.org
#

# Definition des repertoires de travail de courier-imap-ssl
prefix=/usr
exec_prefix=/usr

# Port d'ecoute du protocole IMAPS
SSLPORT=993

# Adresse d'ecoute du serveur
# Cette addresse peut aussi etre de la forme SSLADDRESS=10.1.2.2
SSLADDRESS=0

# Fichier de stockage du PID courant
SSLPIDFILE=/var/run/courier/imapd-ssl.pid

# Passe la main au démon authdaemon pour la partie authentification
# des utilisateurs
AUTHMODULES="authdaemon"

# Demarre le mode SSL et TLS
IMAPDSSLSTART=YES
IMAPDSTARTTLS=YES

# force l'emploi de STARTTLS
IMAP_TLS_REQUIRED=0
COURIERTLS=/usr/bin/couriertls

# Utilisation du SSLv3 et du protocole TLSv1
# Les versions possibles sont SSL2, SSL3 et TLS1
TLS_PROTOCOL=SSL3
TLS_STARTTLS_PROTOCOL=TLS1

# Emplacement des différents certificats
TLS_CERTFILE=/etc/courier/pegase.pem
TLS_TRUSTCERTS=/etc/courier/ac.pem

# Demande la presentation obligatoire d'un certificat client
# Ceci n'est pas possible avec les clients Outlook qui n'offrent
# pas cette possibilité
# Cette variable peut etre mise a :
#	- NONE
#	- PEER : verification du certificat client si présenté
#	- REQUIREPEER : requiert un certificat client
TLS_VERIFYPEER=NONE

Le logiciel « courier-imap-ssl » s’appuie sur le démon d’authentification « authdaemon » dont le paramétrage s’effectue à l’aide du fichier de configuration « /etc/courier/authdaemonrc ». Le fichier correspondant du serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de parametrage du démon authdaemon
#		permettant l'authentification des clients courier
# Serveur     : Pegase
# Copyright   : marc.boget@gendarmerie.org
#

# The term "authentication" is used in the following documentation to 
# refer to either one of these two functions. The library contains 
# several alternative authentication implementations, that may be 
# selected at runtime. 
# 
# authdaemon authenticates through a background daemon proxy. This is 
# now the installation default. Unless otherwise specified, the 
# authdaemon module will always be installed. authdaemon is installed 
# instead of the other authentication modules. Those modules are 
# instead compiled into a separate executable program, authdaemond that 
# is initialized at system start, and runs in the background. The 
# authdaemon authentication module forwards the authentication requests 
# to authdaemond, which forwards the authentication request to the real 
# authentication module, and the result of the request is eventually 
# returned back to the application. Because the real authentication 
# process runs as a persistent background process, it is possible for 
# the authentication process to open and hold permanent connections to 
# the back-end authentication database (be it an LDAP directory, a 
# MySQL or a PostgreSQL server), instead of connecting and 
# disconnecting for every request. Obviously, this tremendously 
# improves the authentication performance. 
# 
# authpam authenticates using the system's PAM library (pluggable 
# authentication module). This is, essentially, a way to use existing 
# PAM modules for authentication functionality. Note, however, that the 
# authenticated account's home directory, userid and groupid are still 
# read from the /etc/passwd file, since PAM functionality is limited to 
# validating account passwords. 
# 
# authpwd authenticates from the /etc/passwd file. 
# 
# authshadow like authpwd except passwords are read from /etc/shadow. 
# 
# authuserdb authenticates against the userdb(8) database. 
# 
# authvchkpw supports existing vpopmail/vchkpw virtual domains. 
# 
# authcram authenticates against the userdb(8) database using the 
# challenge/response authentication mechanism (CRAM), instead of the 
# traditional userid/password. 
# 
# authmysql authenticates against a list of mail accounts stored in an 
# external MySQL database. The /etc/courier/authmysqlrc configuration 
# file defines the particular details regarding the MySQL database and 
# the schema of the mail account list table. 
# 
# authpgsql authenticates against a list of mail accounts stored in an 
# external PostgreSQL database. The authpgsqlrc configuration file 
# defines the particular details regarding the PostgreSQL database and 
# the schema of the mail account list table. 
# 
# authldap authenticates against a list of mail accounts stored in an 
# external LDAP directory. The /etc/courier/authldaprc configuration 
# file defines the particular details regarding the LDAP directory 
# layout. 
# 
# authcustom this is a stub where custom authentication code can be 
# added. This authentication module is just a stub that doesn't really 
# do anything. It's purpose is to serve as a placeholder where custom 
# authentication code can be easily added. 
# 
# This is a complete list of available authentication modules. The 
# actual installed authentication modules are determined by the 
# resources on the server. For example, the authmysql authentication 
# module will be installed only if the system provides MySQL support 
# libraries.

# La liste des modules d'authentification disponibles est celle ci 
# dessous. On peut definir dans la directive "authmodulelist" la liste 
# des modules a employer
authmodulelistorig="authcustom authcram authuserdb authldap authmysql authpam"

# Nombre de démons a lancer au demarrage
daemons=5

# On peut specifier la version du démon a employer quand il existe plusieurs
# demons tournant en meme temps sur la machine
version=""

# Ne surtout pas enlever la ligne ci dessous sous peine de tout faire 
# planter !
authdaemonvar=/var/run/courier/authdaemon

NB : De manière à permettre au logiciel « courier-imap-ssl » de lire les messages d’un utilisateur et compte tenu du fait que ce logiciel utilise le format de boites aux lettres « Maildir » situé sous le répertoire racine de l’utilisateur, la création de la boite aux lettres d’un utilisateur devra être effectuée à l’aide de la commande « maildirmake » lancée depuis le répertoire racine du dit utilisateur.
8.2.9.B.2 - Emission des messages :
Le principe de fonctionnement général mis en place dans le cadre de la maquette est le suivant :

Il est à noter que l’émission de messages s’effectue à l’aide du protocole SMTP dans sa version sécurisée (TLS over SMTP) qui consiste à envoyer des messages SMTP au contenu chiffré (et non des messages clairs au sein d’une session SSL).

L’installation du serveur « postfix » (version 1.1.11-0.woody2) permettant de remplir cette fonctionnalité s’effectue en effectuant les manipulations suivantes :
è	Installation des packages nécessaires :
      - apt-get install postfix postfix-tls 

è	Ces packages dépendent des packages suivants :
      - libc6 (version >= 2.2.4-4) ; 
      - libdb3 (version >= 3.2.9-16) ;
      - libgdbmg1 ;
      - netbase ;
      - adduser ;
      - debconf ;
      - dpkg (version >= 1.8.3) ;
      - postfix-ldap (version = 1.1.11-0.woody2) ;
      - postfix-pcre (version = 1.1.11-0.woody2) ;
      - libsasl7;
      - libssl0.9.6.

Le logiciel « Postfix » se paramètre à l’aides des deux fichiers de configuration suivants :

Les deux fichiers correspondants du serveur « Pégase » sont donnés ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration serveur Postfix
# Serveur     : Pegase
# Copyright   : marc.boget@gendarmerie.org
#

# Definition des repertoires PostFix
command_directory = /usr/sbin
daemon_directory = /usr/lib/postfix
program_directory = /usr/lib/postfix

# Definition du type de boites aux lettres. Par defaut Postfix 
# ecrit dans /var/spool/mail. Le fait de preciser la directive
# home_mailbox permet d'indiquer a Postfix d'ecrire dans le repertoire
# Maildir situé sous la racine du repertoire de l'utilisateur. C'est
# indispensable dans le cas présent car courier-imap utilise ce type
# de boites aux lettres.
home_mailbox=Maildir/

# Banniere SMTP a presenter
smtpd_banner = Site protege - Ne pas penetrer sans autorisation

setgid_group = postdrop
biff = no
append_dot_mydomain = no
myhostname = Pegase

# Definition de la table contenant les alias de messagerie
# Une modification de ce fichier doit etre suivie du lancement
# de la commande "newaliases" pour regenerer la base de données
# interne Postfix
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

myorigin = /etc/mailname
mydestination = Pegase, localhost.localdomain, , localhost
relay_domains = dauphin 
mynetworks = 127.0.0.0/8

# Delivrance du courrier
# On passe la main a procmail de manière à pouvoir faire jouer la 
# détection de SPAM avec SpamAssassin
# Pour une question de sécurité il faut savoir que cette commande
# est désactivée si l’utilisateur de destination est « root »
mailbox_command=/usr/bin/procmail
mailbox_size_limit = 0
recipient_delimiter = +
loglevel=3

# Mise en place des parametres TLS pour la partie serveur (smtpd)
# qui est la partie qui recoie les messages en provenance des clients
# et la partie client (smtp) qui est la partie qui envoie les messages
# vers un autre MTA
smtpd_use_tls=yes
smtpd_tls_cert_file        	= /etc/postfix/pegase-server.crt
smtpd_tls_key_file         	= /etc/postfix/pegase-server.key
smtpd_tls_CAfile           	= /etc/postfix/ac.pem
smtpd_tls_loglevel         	= 1
smtpd_tls_received_header		= yes
smtpd_tls_ask_ccert	       	= yes
smtpd_tls_session_cache_timeout	= 3600

smtp_use_tls                  	= yes
smtp_tls_cert_file            	= /etc/postfix/pegase-client.crt
smtp_tls_key_file             	= /etc/postfix/pegase-client.key
smtp_tls_CAfile               	= /etc/postfix/ac.pem
smtp_tls_loglevel             	= 1
smtp_tls_session_cache_timeout 	= 3600
smtp_tls_note_starttls_offer	= yes

# Definition du répertoire de spool temporaire
queue_directory = /cages/postfix

# Pour se passer de l'interrogation DNS-MX
# Ce fichier contient les deux lignes suivantes :
# dauphin		smtp:52.30.184.1:25
# dauphin.sga.def	smtp:[52.30.184.1]
# A l'issue de la modification de ce fichier, il faut passer la 
# commande "postmap /etc/postfix/transport" de maniere a regenerer
# la base de données postfix
transport_maps 			= hash:/etc/postfix/transport

# Permet de definir si la connexion TLS est obligatoire ou non pour un
# site donné. Ce fichier contient la ligne suivante :
# dauphin	MUST
smtp_tls_per_site		= hash:/etc/postfix/tls_per_site

# Permet de passer la main au demon anti-virus sur le port 10024
content_filter = smtp-amavis:[127.0.0.1]:10024

#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration des services Postfix
# Serveur     : Pegase
# Copyright   : marc.boget@gendarmerie.org
#

# ==========================================================================
# service 	type	private	unpriv	chroot	wakeup	maxproc	command + args
# 		(yes)	(yes)	(yes)	(never)	(50)
# ==========================================================================
smtp	inet	n	-	-	-	-	smtpd
pickup	fifo	n	-	-	60	1	pickup
cleanup	unix	n	-	-	-	0	cleanup
qmgr	fifo	n	-	-	300	1	qmgr
rewrite	unix	-	-	-	-	-	trivial-rewrite
bounce	unix	-	-	-	-	0	bounce
defer	unix	-	-	-	-	0	bounce
flush	unix	n	-	-	1000?	0	flush
smtp	unix	-	-	-	-	-	smtp
showq     	unix	n	-	-	-	-	showq
error     	unix	-	-	-	-	-	error
local	unix	-	n	n	-	-	local
virtual	unix	-	n	n	-	-	virtual
lmtp	unix	-	-	n	-	-	lmtp

# Interfaces vers des logiciels externes
cyrus	unix	-	n	n	-	-	pipe
  flags=R user=cyrus argv=/usr/sbin/cyrdeliver -e -m ${extension} ${user}
uucp	unix	-	n	n	-	-	pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail	unix	-	n	n	-	-       pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp	unix	-	n	n	-	-       pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -d -t$nexthop -f$sender $recipient
scalemail-backend	unix	-	n	n	-	2	pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}

# Interface avec l'anti-virus
smtp-amavis	unix	-		-		n		-		2	smtp
    -o smtp_data_done_timeout=1200
    -o disable_dns_lookups=yes

# Mise en place d'une ecoute supplémentaire sur le port 10025 en localhost
# uniquement pour reception des messages renvoyés apres analyse par l'anti-virus
127.0.0.1:10025	inet 	n		-		n		-		-  		smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_client_restrictions=
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o mynetworks=127.0.0.0/8
    -o strict_rfc821_envelopes=yes
8.2.9.B.3 - Anti-Spam :
L’outil de détection des messages spam choisi est l’outil « SpamAssassin ». Il permet grâce à des scripts tous situés dans le répertoire « /etc/spamassassin » de donner une « note » aux différents messages stockée dans son entête et permettant par la suite un traitement des dits messages (déplacement dans le dossier « SPAM » dans le cadre de la maquette).

Le principe de l’outil d’analyse de « SPAM » est le suivant :

L’installation de l’outil « SpamAssassin » (version 2.20-1woody) s’effectue en réalisant les manipulations suivantes :
è	Installation du package spamassassin :
      - apt-get install spamassassin 

è	Ce package dépend des packages suivants :
      - perl (>= 5.6.0-16);
      - perl-modules;
      - dpkg (>= 1.8.1).

è	Installation du package procmail (version 3.22-4):
      - apt-get install spamassassin 

è	Ce package dépend des packages suivants :
      - exim ou mail-transport-agent ou fetchmail.

L’outil « SpamAssassin » peut être paramétré en modifiant les fichiers contenus dans le répertoire « /etc/spamassassin » et notamment le fichier « /etc/spamassassin/10_misc.cf » dont le contenu sur le serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration de l'outil d'analyse de SPAM
#             : Voir man Mail::SpamAssassin::Conf pour tous les details
# Serveur     : Pegase
# Copyright   : marc.boget@gendarmerie.org
#


# Definition de l'entete a afficher en cas de SPAM
#      ......................................................................
clear-report-template
report -------------------- Resultats de l'analyse de SPAM ------------------
report Ce message apparait etre un message SPAM. 
report 
report Detail de l'anayse :   (_HITS_ hits, _REQD_ required)
report _SUMMARY_
report ---------------------- Fin de l'analyse de SPAM ----------------------
#      ......................................................................

# Definition du message que l'on peut envoyer a l'emetteur du SPAM
clear-spamtrap-template
spamtrap Sujet: Adresse indisponible

spamtrap [Ce message a ete automatiquement généré]
spamtrap 
spamtrap Bien vouloir noter que cette adresse n'est plus disponible et que
spamtrap de plus elle recoit des messages non désirés. C'est pourquoi, tous
spamtrap les messages envoyés à cette adresse sont systématiquement détruits.
spamtrap
spamtrap Le message envoyé est reproduit ci dessous pour vous permettre de le
spamtrap réemettre à une adresse correcte.
spamtrap 
spamtrap [-- L'outil d'analyse de SPAM]
spamtrap 

###########################################################################

# Terse report template.
#
#            ......................................................................
clear-terse-report-template
terse-report ---- Start SpamAssassin results
terse-report _HITS_ hits, _REQD_ required;
terse-report _SUMMARY_
terse-report ---- End of SpamAssassin results
#            ......................................................................

# Valeur à partir de laquelle le message est considéré comme du SPAM
required_hits           5

# Nombre de messages avant que l'adresse emetteur soit envoyé à un service de blacklist.
# Attention à bien vérifier qu'il s'agit d'une adresse de SPAM !!!
auto_report_threshold   30

# Language préférentiel
ok_locales              fr

# Il est possible de redéfinir les options suivantes :
# rewrite_subject       1
# report_header         0
# subject_tag           *****SPAM*****
# use_terse_report      0
# defang_mime           1
# skip_rbl_checks       0
# check_mx_attempts     3
# check_mx_delay        5

Le démon « ProcMail » est lui paramétré grâce notamment au fichier « /etc/procmailrc » dont le contenu sur le serveur « Pégase » est donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration du démon ProcMail
#             : Voir man procmailrc pour tous les details et la syntaxe
# Serveur     : Pegase
# Copyright   : marc.boget@gendarmerie.org
#

VERBOSE=Yes
SHELL=/bin/sh
PATH=/usr/bin:/bin
MAILDIR=$HOME/Maildir/
LOGFILE=$HOME/log_procmail
DEFAULT=$MAILDIR/new

:0fw
| /usr/bin/spamassassin -P

:0:
* ^X-Spam-Status: Yes
$MAILDIR/.SPAM/

8.2.9.B.4 - Anti-Virus :
Le logiciel d’anti-virus choisi est le logiciel « clamav ». La procédure décrite dans le présent paragraphe peut également s’appliquer aux anti-virus suivants :

L’installation de l’outil « ClamAv » (version 0.60-1) s’effectue en réalisant les manipulations suivantes :
è	Modification du fichier /etc/apt/sources.list pour crise en compte de la version testing (le package « clamav-daemon » ne fait pas encore partie des packages stables)

è	Installation du package clamav-daemon :
      - apt-get install clamav-daemon 

è	Ce package dépend des packages suivants :
      - debconf (version >= 0.5) ;
      - libbz2-1.0 ;
      - libc6 (version >= 2.3.1-1) ;
      - libclamav1 ; 
      - zlib1g (version >= 1:1.1.4) ; 
      - clamav;
      - clamav-base (version = 0.60-1) ;
      - clamav-freshclam ;
      - cron ;
      - debianutils (version >= 1.6);
      - ucf.

Cet outil se paramètre à l’aide du fichier « /etc/clamav.conf » donné ci-dessous :
#
# Emplacement : Maquette de test SGA
# Description : Fichier de configuration permettant l'interaction entre les
#             : modules PAM et le serveur LDAP
#             : Voir meme fichier sur serveur GrandeOurse pour tous les details
# Serveur     : Dauphin
# Copyright   : marc.boget@gendarmerie.org
#

#This file is created using debconf, don't modify it by hand!
#To reconfigure clamd run #dpkg-reconfigure clamd
LocalSocket /var/run/clamd.ctl
ScanMail
ScanArchive
ArchiveMaxRecursion 5
ArchiveMaxFiles 1000
ArchiveMaxFileSize 10M
FollowFileSymlinks
ThreadTimeout 180
MaxThreads 5
MaxConnectionQueueLength 15
LogSyslog
PidFile /var/run/clamd.pid
DataDirectory /var/lib/clamav/

L’interface entre l’anti-virus et le serveur de messagerie « Postfix » s’effectue à l’aide du paramétrage de « Postfix » décrit plus haut et du logiciel « amavis-ng ».

Cet outil s’installe de la façon suivante :
è	Installation du package amavis-ng (version 0.1.6.2-1):
      - apt-get install amavis-ng

è	Ce package dépend des packages suivants :
      - logrotate ; 
      - perl (version >= 5.6.0-16) ;
      - libnet-perl
      - libfile-mmagic-perl (version >> 1.15) ;
      - libconfig-inifiles-perl ;
      - libmime-perl (version >=5.313) ;
      - libmime-base64-perl ;
      - libconvert-tnef-perl (version >=0.06) ;
      - libconvert-uulib-perl ;
      - libcompress-zlib-perl (version >=1.14) ;
      - libarchive-tar-perl;
      - libarchive-zip-perl;
      - suidmanager;
      - perl-suid;
      - nomarch;
      - debconf (version >= 0.5).

Le fichier de configuration « /etc/amavis/amavisd.conf » doit être modifié sur les trois lignes suivantes :
...
$mydomain = 'dauphin'; 
...
$daemon_user  = 'amavis';
$daemon_group = 'amavis';

8.2.9.C - Serveur SSH :

L’installation du serveur SSH est décrite dans le paragraphe ‎8.2.3.E - .

8.2.9.D - Déport des logs :

Le paramétrage du déport des logs est décrit dans le paragraphe ‎8.2.3.C - .

8.2.9.E - Authentification des utilisateurs sur l’annuaire LDAP :

Le paramétrage de l’authentification des utilisateurs sur l’annuaire GrandeOurse est décrit au paragraphe ‎8.2.6.D - .

Haut Précedent Suivant Titre Sommaire